package com.huang

import android.app.Activity

object ActivityController {
    // 存储所有的Activity
    private val activities = ArrayList<Activity>()

    /**
     * 向活动集合中添加一个新的活动。
     *
     * @param activity 要添加的活动实例。
     *
     * 此方法用于在活动集合中添加一个新的活动。通过将给定的活动实例添加到集合中，
     * 可以跟踪和管理应用中的活动生命周期。通常用于需要对应用中的所有活动进行统一管理的场景。
     */
    fun addActivity(activity: Activity) {
        activities.add(activity)
    }

    /**
     * 从活动集合中移除指定的活动
     *
     * 此方法用于从全局活动集合中移除一个特定的活动实例这通常在活动结束或者需要释放资源时发生
     * 通过移除活动引用，有助于内存管理和避免内存泄漏
     *
     * @param activity 要从集合中移除的活动实例
     */
    fun removeActivity(activity: Activity) {
        activities.remove(activity)
    }

    /**
     * 结束所有活动
     *
     * 此函数遍历活动列表，安全地结束每个尚未结束的活动，以释放资源
     * 它首先检查活动是否已经结束，如果没有，则调用finish()方法来结束它
     * 最后，清除列表中的所有活动引用，确保没有遗留的引用阻碍垃圾回收
     */
    fun finishAll() {
        // 遍历活动列表
        for (activity in activities) {
            // 检查活动是否已经结束，以避免错误的结束操作
            if (!activity.isFinishing) {
                activity.finish()
            }
        }
        // 清除所有活动引用，以帮助垃圾回收并确保应用的内存健康
        activities.clear()
    }
}